function call(Fn,obj,...args){
    //如果函数处于非严格模式下，则指定为null或undefined时会自动替换为指向全局对象，原始值会被包装
    if(obj===undefined||obj===null){
        obj=globalThis  //全局对象
    }

    //为obj添加临时的方法
    obj.temp=Fn;
    //调用temp方法
    let result=obj.temp(...args)
    //删除temp方法
    delete obj.temp;
    //返回执行结果
    return result;
    
}




/* function bind(Fn,obj,...args){
    return function()
    {
        return call(Fn,obj,...args)
    }
} */


function bind(Fn,obj,...args)  //...args的话  在调用函数的时候 我们可以传参 也可以不传参  都不会报错  但如果有
//传参的调用 那这里最好就写上 
{
    return function(...args2)
    {
        return call(Fn,obj,...args,...args2)  //有哪个就调用哪个  args2应该在后面
    }
}